www.gusucode.com > XerCMS 携云PHP企业建站程序 v2015PHP源码程序 > XerCMS 携云PHP企业建站程序 v2015/XerCMS_v20150724/XerCMS_v20150724/XerCMS/Library/upload/XerCMS_image.php

    <?php
/**
 * @name     XERCMS
 * @author   Arno <XerCMS@163.com> [QQ:1328013]
 * @version  1.0.0
 * @link     http://www.XerCMS.com 
 */

!defined('XERCMS') && exit('Access Denied');

include_once(dirname(__file__).'/imagecreatefrombmp.php');
class image
{
     var $config;
     var $source;
	var $file;
	var $formats = array(1,2,3,6);
	var $format;
	var $images;
    var $info;
	
	function __contruct() {
	     @ini_set('memory_limit', '128M');
	}
	
	function handle($file) {
          if(empty($this->config['thumbs']))
               return;
		$this->info =  getimagesize($file);
		//$this->format = exif_imagetype($file);
		if(!$this->info || !in_array($this->info[2],$this->formats)) {
		     return;
		}
		$this->file = $file;
	     foreach($this->config['thumbs'] as $v){
	         $this->thumb($v['width'],$v['height'],$v['cut'],$v['quality']);    
	     }
		return $this->images;
	}
	
	function Init($params) {
	     $this->config = $params;
	}
	
	function ext($file) {
	     $file = explode('.',$file);
		return $file[count($file) - 1];	
	}
	
	function create() {
	     $this->source = null;
	     switch($this->format) {
			case IMAGETYPE_JPEG:
			     $this->source = imagecreatefromjpeg($this->file);
			break;
			case IMAGETYPE_JPEG:
			     $this->source = imagecreatefromjpeg($this->file);
			break;
			case IMAGETYPE_GIF:
			     $this->source = imagecreatefromgif($this->file);
			break;
			case IMAGETYPE_PNG:
			     $this->source = imagecreatefrompng($this->file);
				//imagesavealpha($this->source, true);
			break;
			case IMAGETYPE_BMP:
			     $this->source = imagecreatefrombmp($this->file);
			break;			
	     }
		
	}
	
	function save($quality) {
	     switch($this->format) {
			case IMAGETYPE_JPEG:
			     imagejpeg($this->img,$this->dst,$quality);
			break;
			case IMAGETYPE_BMP:
			     imagejpeg($this->img,$this->dst,$quality);
			break;
			case IMAGETYPE_GIF:
			     imagegif($this->img,$this->dst);
			break;
			case IMAGETYPE_PNG:
			     imagepng($this->img,$this->dst,ceil($quality/100));
			break;		
	     }
		$this->images[] = $this->dst;
	}
	
     function thumb($width,$height,$cut = 'no',$quality = '75') {
        $info = &$this->info;
		if(!$info) return;
		$this->create();
		if($this->source == null) return;
		$ratio = $info[0]/$info[1];
		
		$nWidth = $info[0];$nHeight = $info[2];
		if ($info[0] > $width) {
		     $nWidth = $width;
			$nHeight = $nWidth/$ratio;//exit($ratio.'=');
			if($nHeight > $height && $cut == 'yes') {
			     $nHeight = $height;
			}
		} else if($info[1] > $height) {
		     $nWidth = $info[0];
		     if ($cut == 'yes'){
			     $nHeight = $height;
			} else $nHeight = $info[1];
		}
		$nWidth = (int)$nWidth;$nHeight = (int)$nHeight;
		//print_r($nWidth.'|'.$nHeight);exit();
		$this->dst = strtr($this->file,array('.'=>'!'.$width.'x'.$height.'.'));
		$this->img = imagecreatetruecolor($nWidth,$nHeight);
		/*From the Internet*/
          if(($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG)) { 
               $transparent = imagecolortransparent($this->source); 
               if ($transparent >= 0) {
                    $color = imagecolorsforindex($this->source, $transparent); 
                    $transparent = imagecolorallocate($this->img, $color['red'], $color['green'], $color['blue']); 
                    imagefill($this->img, 0, 0, $transparent); 
                    imagecolortransparent($this->img, $transparent); 
               } elseif ($info[2] == IMAGETYPE_PNG) { 
                    imagealphablending($this->img, false); 
                    $color = imagecolorallocatealpha($this->img, 0, 0, 0, 127); 
                    imagefill($this->img, 0, 0, $color); 
                    imagesavealpha($this->img, true); 
               } 
          }
		imagecopyresampled($this->img,$this->source,0,0,0,0,$nWidth,$nHeight,$info[0],$info[1]);
		$this->save($quality);
		imagedestroy($this->img);
		$this->source = null;
     }
}
?>